package com.burst.reptile.modular.system.service.impl;

import java.util.Arrays;
import java.util.List;

import org.springframework.stereotype.Service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.burst.reptile.common.constant.UserConstants;
import com.burst.reptile.common.utils.ToolUtil;
import com.burst.reptile.modular.system.entity.SysConfig;
import com.burst.reptile.modular.system.mapper.SysConfigMapper;
import com.burst.reptile.modular.system.service.ISysConfigService;

/**
 * <p>
 * 参数配置表 服务实现类
 * </p>
 *
 * @author wujin
 * @since 2020-05-24
 */
@Service
public class SysConfigServiceImpl extends ServiceImpl<SysConfigMapper, SysConfig> implements ISysConfigService {

	@Override
	public String selectConfigByKey(String configKey) {
		SysConfig retConfig = this.baseMapper.selectOne(new QueryWrapper<SysConfig>().eq("config_key", configKey));
		return ToolUtil.isNotEmpty(retConfig) ? retConfig.getConfigValue() : "";
	}

	@Override
	public Page<SysConfig> selectPageConfigList(Page<SysConfig> page, SysConfig config) {
		return this.baseMapper.selectPageConfigList(page, config);
	}

	@Override
	public List<SysConfig> selectConfigList(SysConfig config) {
		return this.baseMapper.selectConfigList(config);
	}

	@Override
	public String checkConfigKeyUnique(SysConfig config) {
		Long configId = ToolUtil.isEmpty(config.getConfigId()) ? -1L : config.getConfigId();
		SysConfig info = this.baseMapper.selectOne(new QueryWrapper<SysConfig>().eq("config_key", config.getConfigKey()));
		if (ToolUtil.isNotEmpty(info) && info.getConfigId().longValue() != configId.longValue()) {
			return UserConstants.NOT_UNIQUE;
		}
		return UserConstants.UNIQUE;
	}

	@Override
	public int insertConfig(SysConfig config) {
		return this.baseMapper.insert(config);
	}

	@Override
	public int updateConfig(SysConfig config) {
		return this.baseMapper.updateById(config);
	}

	@Override
	public int deleteConfigByIds(Long[] configIds) {
		return this.baseMapper.deleteBatchIds(Arrays.asList(configIds));
	}

}
